Keycloak在26.2版本提供了更多的可觀測性能力[^1][^2]。不過當前SSO服務使用的版本還未有此能力,儘管有提供有限的Metrics資訊,不過以那些資訊是無法知道SSO服務的使用情況。
那麼每分鐘處理440次請求、尖峰時刻可以在1分鐘內高達2000次請求,這樣的統計資訊是怎麼來的呢?
[^1]: Observability in Keycloak 26.2
[^2]: 使用追踪进行根本原因分析
這其實是透過旁車的設計機制。
所謂旁車(Sidecar),指的是會與機車一起向前的可掛載車位。

在服務概念就是與服務一起運行的額外服務。它可能提供了額外的能力或是只是做一些最基本的事務。
在SSO的例子來說,提供給SSO使用的APISIX,也僅提供給SSO使用。也就是透過觀測APISIX,就可以間接了解SSO服務的使用情況。

透過APISIX的skywalking外掛或opentelemetry外掛,以及啓用prometheus和node-status。可以採集到像是下面的資訊:


簡單來說,這個方法就是 「曲線救國」 :當主服務無法提供監控數據時,就透過其旁車來達成可觀測性的目的。
此處也僅示範如何啓用prometheus。
還記得在「Quick Start」裡docker-compose.yml檔案轉發了9091端口嗎?
  apisix:
    container_name: apisix
    restart: always
    image: "apache/apisix:3.2.2-debian"
    volumes:
      - ./apisix_config/config.yaml:/usr/local/apisix/conf/config.yaml:ro
    ports:
      - 9180:9180 # admin api
      - 9080:9080 # HTTP
      - 9091:9091 # prometheus
      - 9443:9443 # HTTPS
      - 9090:9090 # control api
      - 389:389 # Proxy AD Service
    environment:
      TZ: "Asia/Taipei"
要啓用promethus相當簡單,在apisix_config/config.yaml最後添加:
plugin_attr:
  prometheus:
    export_addr:
      ip: "0.0.0.0"
      port: 9091
這個設定並不會自動載入,需要重啓APISIX:
docker compose exec apisix apisix restart

然後就可以瀏覽 http://localhost:9091/apisix/prometheus/metrics 。也就可以在透過prometheus或其他collector工具定期拉取metrics資訊。